// 认证状态管理
import authService from '@/utils/auth.js'

// 认证状态管理类
class AuthStore {
  constructor() {
    this.listeners = []
    this.isAuthenticated = false
    this.userInfo = null
    this.init()
  }

  // 初始化
  init() {
    this.updateAuthState()
  }

  // 更新认证状态
  updateAuthState() {
    this.isAuthenticated = authService.isLoggedIn()
    this.userInfo = authService.getUserInfo()
    this.notifyListeners()
  }

  // 添加状态监听器
  addListener(callback) {
    this.listeners.push(callback)
  }

  // 移除状态监听器
  removeListener(callback) {
    const index = this.listeners.indexOf(callback)
    if (index > -1) {
      this.listeners.splice(index, 1)
    }
  }

  // 通知所有监听器
  notifyListeners() {
    this.listeners.forEach(callback => {
      try {
        callback({
          isAuthenticated: this.isAuthenticated,
          userInfo: this.userInfo
        })
      } catch (error) {
        console.error('认证状态监听器执行失败:', error)
      }
    })
  }

  // 微信登录
  async wechatLogin() {
    try {
      await authService.wechatLogin()
      this.updateAuthState()
      return true
    } catch (error) {
      console.error('微信登录失败:', error)
      return false
    }
  }

  // 登录（保留原有方法，用于兼容）
  async login() {
    try {
      await authService.miniappLogin()
      this.updateAuthState()
      return true
    } catch (error) {
      console.error('登录失败:', error)
      return false
    }
  }

  // 退出登录
  logout() {
    authService.logout()
    this.updateAuthState()
  }

  // 获取认证状态
  getAuthState() {
    return {
      isAuthenticated: this.isAuthenticated,
      userInfo: this.userInfo
    }
  }

  // 检查是否需要重新登录
  async checkAuth() {
    if (!this.isAuthenticated) {
      return await this.login()
    }
    return true
  }
}

// 创建单例实例
const authStore = new AuthStore()

export default authStore
